package com.hk.invocation;

import com.hk.util.LogUtil;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class MyInvocationHandler implements InvocationHandler{
    Object object;
    //目标对象Object obj
    public MyInvocationHandler(Object object){
        this.object=object;
    }
    //Object proxy:代理类对象 ，只有jdk自己用，你们千万不要用
    //Method method:代理类的方法（目标方法）
    //Object[]  args：执行目标方法的参数
    //我们需要在invoke方法里面去调用目标方法  再加上自己的增强逻辑
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object result=new Object();
        //通过反射调用目标方法  第一个参数目标对象，第二个参数是参数
        try {
            LogUtil.start();
            result = method.invoke(object, args);
//            result=10000;
            LogUtil.returnResult();
        }catch (Exception e){
            LogUtil.throwEx();
            return 0;
        }finally {
            LogUtil.end();
        }

        return result;
    }
}
